package com.rgz.interceptor;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.rgz.pojo.User;


public class InterceptorTest implements HandlerInterceptor {

     /* handle 执行之后   且   视图返回后 
      * 一般   做日志 记录 操作 ，  资源清理  （异常欣喜）
      * 
      * 
      * */
	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
			
	}
	/*handle 执行之后，但是 还没有返回 视图之前
	 * 一般 用于 加入 通用信息
	 * 
	 * */
	
	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		
	}
	
	
	/*handle  执行调用 方法前
	 * 返回 true  就继续执行 之后 的代码 
	 * 返回 false  就停止 执行 
	 * 一般 用作 登陆 校验， 权限拦截 
	 * 
	 * */
	
	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		
		String url = arg0.getRequestURI();
		if(url.contains("getTest")){
			return true;
		}else if(url.contains("whd_login")){
			return true;
		}else if(url.contains("ccx_home_page")){
			return true;
		}else if(url.contains("login_in")){
			return true;
		}else if(url.contains("login_sms")){
			return true;
		}
		
		//判断 session中  是否有 用户 
		User user =(User)arg0.getSession().getAttribute("user");
		
		if(user!=null){
			Cookie cookie = new Cookie("phone", user.getUserphone());
			cookie.setMaxAge(60*60*1);
			arg1.addCookie(cookie);
			return true;
		}else if(user==null){
			Cookie[] cookies = arg0.getCookies();
			if(cookies!=null && cookies.length>0){
				for(int i=0;i<cookies.length;i++){
					if(cookies[i].getName().equals("phone")){
						String phone = cookies[i].getValue();
						User user2 = new User();
						user2.setUserphone(phone);
						arg0.getSession().setAttribute("user", user2);
						return true;
					}
		        }
			}
	     }  
		//如果没有 登陆 就 跳转到   登陆页面
		arg0.getRequestDispatcher("whd_login").forward(arg0, arg1);
		
		
		return false;
	}

}
